const { saveAPPLog } = require("./log");
const { serveUrl } = require('./config');

/**
 * POST请求
 * @param {*} url 请求地址
 * @param {*} config 请求配置
 * @returns 
 */
function GET(url, config) {
    return fetch(url, config).then(response => {
        if (!response.ok) {
            throw new Error(`HTTP error! Status: ${response.status}`);
        }
        return response.json(); 
    })
}
/**
 * POST请求
 * @param {*} url 请求地址
 * @param {*} data 请求数据对象
 * @param {*} config 请求配置
 * @returns 
 */
function POST(url, data, config) {
    return fetch(url, { 
        method: 'POST', 
        headers: { 'Content-Type': 'application/json' }, 
        body: JSON.stringify(data),
        ...config
    }).then(response => {
        if (!response.ok) {
            throw new Error(`HTTP error! Status: ${response.status}`);
        }
        return response.json(); 
    })
}


// 获取退出设置
function getCloseSetting(){
    return GET(serveUrl + '/sys/config/get-close-setting').then(data => {
        return data?.data?.body
    })
}
// 获取ics服务列表
function getIcsList(){
    return GET(serveUrl + '/sys/ics/list?status=1').then(data => {
        return data?.data ?? []
    })
}
// 关闭java服务
async function closeServes(){
    const icsList = await getIcsList()
    if (icsList?.length) {
        const icsId = icsList?.[0]?.id
        saveAPPLog('关闭服务::: ', serveUrl + '/sys/shutdown/' + icsId)
        return POST(serveUrl + '/sys/shutdown/' + icsId, { id: icsId })
    } else {
        throw({reason: '没有查询到Ics服务列表', icsList})
    }
}

module.exports = {
    getCloseSetting,
    closeServes,
}